/*
 * MineralSolution.h
 *
 *  Created on: 28 May 2011
 *      Author: allan
 */

#ifndef MINERALSOLUTION_H_
#define MINERALSOLUTION_H_

// GeoReact includes
#include "Solution.h"
#include "Utils.h"

class MineralSolution : public Solution
{
public:
	MineralSolution();
	
	explicit MineralSolution(const vector<string>& species);
	
	virtual ~MineralSolution();
	
	virtual const string
	GetName() const;
	
	virtual const vector<string>
	GetSpecies() const;
	
	virtual const VectorXd
	MolarFractions(const VectorXd& n) const;
	
	virtual const VectorXd
	Concentrations(const VectorXd& n) const;
	
	virtual const VectorXd
	ActivityCoefficients(double T, double P, const VectorXd& n) const;
	
	virtual const VectorXd
	Activities(double T, double P, const VectorXd& n) const;
	
private:
	/// The species in the mineral solution
	vector<string> species;
};

#endif /* MINERALSOLUTION_H_ */
